import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.*; 
/**
 * Clase BalaPlancton: llamada mediante la clase Pez para 
 * disparar Plancton al tiburon, a los dientes, a las manchas de tinta, pulpo.
 * 
 * @author Vianey Ortiz
 * @version 05/12/2012
 */
public class BalaPlancton extends Actor
{
    private int diente;
    private int tibu;
    private int pulp;
    private int tint;
    /**
     * Verifica en el siguiente orden cual enemigo debe de seguir para matarlo, dientes de tiburon, 
     * al tiburon, las manchas de tinta y al pulpo, si se llega a lanzar una bala de mas y ya no hay enemigo 
     * que destruir unicamente la mueve a alguno de los limites de la pantalla y desaparece.
     */    
    public void act() 
    {
        // Add your action code here.
        WorldFish mundo;
        mundo=(WorldFish)super.getWorld();
        diente=((mundo.getObjects(Diente.class)).toArray()).length;
        tibu=((mundo.getObjects(Tiburon.class)).toArray()).length;
        pulp=((mundo.getObjects(Pulpo.class)).toArray()).length;
        tint=((mundo.getObjects(Tinta.class)).toArray()).length;
        if(diente!=0)
        {
            checaMovDiente();   
        }
        else if(tibu!=0)
        {
            checaMovTiburon();
        }
        else if(tint!=0)
        {
            checaMovEliminaMancha();
        }
        else if(pulp!=0)
        {
            checaMovPulpo();
        }
        if(tibu==0&&diente==0&&pulp==0&&((mundo.getObjects(BalaPlancton.class)).toArray()).length!=0)
        {
            move(15);
            if(getX()==0||getX()==800)
            {
                mundo.removeObject(this);
            }
        }
    }    
    
    /**
    * Checa a donde se mueve el tiburon, 
    * para seguirlo.
    */
    public void checaMovTiburon()
    {
        List tib = getObjectsInRange(1200,Tiburon.class);
        int x;
        int y;
        Tiburon tibu =(Tiburon)tib.get(0);
        x=tibu.getX();
        y=tibu.getY();
        turnTowards(x,y);
        move(15);
    }
    
    /**
    * Checa a donde hay una mancha de tinta
    * para eliminarla.
    */
    public void checaMovEliminaMancha()
    {
        List manch = getObjectsInRange(1200,Tinta.class);
        int x;
        int y;
        Tinta man =(Tinta)manch.get(0);
        x=man.getX();
        y=man.getY();
        turnTowards(x,y);        
        move(15);
        
        Actor mancha;
        mancha= super.getOneObjectAtOffset(0,0,Tinta.class);
        if(mancha != null)
        {
            WorldFish mund;
            mund=(WorldFish)super.getWorld();
            mund.removeObject(mancha);
            mund.removeObject(this);
        }
    }
    
    /**
    * Checa a donde se mueve el Diente, 
    * para seguirlo.
    */
    public void checaMovDiente()
    {
        List die = getObjectsInRange(1200,Diente.class);
        int x;
        int y;
        Diente diente =(Diente)die.get(0);
        x=diente.getX();
        y=diente.getY();
        turnTowards(x,y);        
        move(15);
    }
    
    /**
    * Checa a donde se mueve el Pulpo, 
    * para seguirlo.
    */
    public void checaMovPulpo()
    {
        List pulp = getObjectsInRange(1200,Pulpo.class);
        int x;
        int y;
        Pulpo pulpo =(Pulpo)pulp.get(0);
        x=pulpo.getX();
        y=pulpo.getY();
        turnTowards(x,y);        
        move(15);
    }
}
